js 随机数

从一个C++函数说起:

1
2
3
4
5
6
7
8
9
10
11
namespace SortTestHelper{
//生成有n个元素的随机数组,每个元素的随机范围为rangeL~rangeR
int* generateRandomArray(int n,int rangeL,int rangeR){
int *arr = new int[n];
srand(time(NULL));
for(int i = 0; i < n; i++){
arr[i] = rand() % (rangeR - rangeL + 1) + rangeL;
}
return arr;
}
}

今天看了上面这个 C++ 函数生成一个随机数数组,就想琢磨着用js生成各种可能需求的随机数。

JS没有现成的函数,能够直接生成指定范围的随机数。但是它有个函数:Math.random() 这个函数可以生成 [0,1) (包括0,不包括1)的一个随机数。利用它,我们就可以生成指定范围内的随机数。

js版n个元素的随机数组

1
2
3
4
5
6
7
function RndArray(n,rangL,rangR){
var arr = [];
for(var i=0; i<n; i++){
arr[i] = Math.round((Math.random()*(rangR - rangL)) + rangL);
}
return arr;
}

随机生成n位数的随机数

1
2
3
4
5
6
7
function RndNum(n){
var rnd = "";
for(var i=0;i<n;i++){
rnd += Math.floor(Math.random()*10);
}
return parseInt(rnd);
}

随机生成从1开始至任意值的随机数

1
2
3
4
//parseInt(Math.random()*上限+1);
function RndNum(n){
return parseInt(Math.random()*n+1)
}

随机生成从任意值至任意值的随机数

1
2
3
function RndNum(rangeL, rabgeR){ 
return parseInt(Math.random()*(rabgeR-rangeL+1) + rangeL);
}

网上生成某个范围的随机数(四种情况)

min ≤ r ≤ max:

1
2
3
4
5
6
function RandomNumBoth(Min,Max){
var Range = Max - Min;
var Rand = Math.random();
var num = Min + Math.round(Rand * Range); //四舍五入
return num;
}

min ≤ r < max:

1
2
3
4
5
6
function RandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();
var num = Min + Math.floor(Rand * Range); //舍去
return num;
}

min < r ≤ max

1
2
3
4
5
6
7
8
9
function RandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();
if(Math.round(Rand * Range)==0){
return Min + 1;
}
var num = Min + Math.round(Rand * Range);
return num;
}

min < r < max :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function RandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();
if(Math.round(Rand * Range)==0){
return Min + 1;
}else if(Math.round(Rand * Max)==Max)
{
index++;
return Max - 1;
}else{
var num = Min + Math.round(Rand * Range) - 1;
return num;
}
}



完~